package com.example.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * @author zhangs
 * @version v1.0
 * @decription 在线人数监听
 * @date 2021/3/24 18:48
 **/
@WebListener
public class OnlinePerson implements HttpSessionListener {
    private long num = 0;

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        // session创建，在线人数加1
        num++;

        // 将人数设置到 ServletContext 的作用域中，由于 ServletContext 作用域只能记录当前
        se.getSession().getServletContext().setAttribute("onlineCount", num);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        // session创建，在线人数加1
        num--;

        // 将人数设置到 ServletContext 的作用域中，由于 ServletContext 作用域只能记录当前
        se.getSession().getServletContext().setAttribute("onlineCount", num);
    }
}
